#!/usr/bin/python
#
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Example of a program running on SQLite engine.

# ********
# * This only works if you have SQLite installed.
# *

@Engine("sqlite");

# Define natural numbers from 0 to 29.
N(x) :-
  x == a * 10 + b * 5 + c,
  (a == 0 | a == 1 | a == 2),
  (b == 0 | b == 1),
  (c == 0 | c == 1 | c == 2 | c == 3 | c == 4);

# Define primes.
Prime(prime: x) :-
  N(x),
  x > 1,
  ~(
    N(y),
    y > 1,
    y != x,
    x % y == 0
  );